Revision: tla--devo--1.1--patch-13
Archive: rweir@ertius.org--2003-arch
Creator: Rob Weir <rweir@ertius.org>
Date: Tue Sep 23 20:13:55 EST 2003
Standard-date: 2003-09-23 10:13:55 GMT
New-files: libarch/cmd-mv.c libarch/cmd-mv.h
Modified-files: libarch/cmds.c
New-patches: rweir@ertius.org--2003-arch/tla--devo--1.1--patch-13
Summary: initial "tla mv foo bar" command
Keywords: 

Current semantics:

If foo does not have an existing explicit tag file associated with it,
then it is simply moved in the exact same manner as "mv foo bar"
would.

Foo must be a file, directory or symlink, and bar can be a directory,
symlink, file or non-existent.

If foo is a file or symlink:
* If bar does not exist, then foo is moved to bar, along with it's
  tag.
* If bar exists, and is a file, then it is clobbered by foo, and bar's
  tag is replaced with foo's.
* If bar exists, and is a directory, then foo and it's tag are moved
  into bar.
* If bar exists, and is a symlink to file baz, then the link will be
  clobbered and replaced with foo (and it's tag will move across). baz
  will be unchanged.
* If bar exists, and is a symlink to a directory called baz, then foo is
  moved into baz, along with it's tag.

If foo is a dir, then it can only be moved to a new non-existent name,
or into an existing directory (or a symlink to an existing directory).
Attempting to move a directory onto a file (or a symlink to a file)
will fail, just as mv(1) does.
